using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace VABMobile.oo
{
    public class Itinerario
    {
        public static char IDA = 'I',VUELTA= 'V';

        private static List<Itinerario> _itinerarios = null;
        public static List<Itinerario> itinerarios()
        {
            if (_itinerarios != null) return _itinerarios;
            _itinerarios = new List<Itinerario>();

            var data = new[,] {
                 {"120","P.MONTT","QUELLON"}
                ,{"121","P.MONTT","CASTRO"}
                ,{"122","P.MONTT","ANCUD"}
                ,{"131","P.MONTT","TEMUCO"}
                ,{"141","P.MONTT","TALCAHUANO"}
                ,{"142","P.MONTT","TALCAHUANO/CONCEPCION"}
                ,{"751","CASTRO","TEMUCO"}
                ,{"851","QUELLON","TEMUCO"}
            };
            for (int i = 0; i < data.GetLength(0); i++)
            {
                var it=new Itinerario(data[i,0]);
                it.ciudades.Add(data[i,1]);
                it.ciudades.Add(data[i,2]);
                //MessageBox.Show(data[i,1]+"  "+data[i,2]+"\n"+it.Origen + "  " +it.Destino);
                //MessageBox.Show(it.ciudades[0] + "   "+it.ciudades[1]);

                _itinerarios.Add(it);
            }


            return _itinerarios;
        }

        private string codigo;
        private char sentido;
        
        public Itinerario(string cod)
        {   /*
            if(cod.Length!=4) throw new ArgumentException(
                "Codigo debe ser de cuatro caracteres");

            this.sentido = cod[3];
            if (sentido != IDA || sentido != VUELTA) throw new ArgumentException(
                   "Solo tramos de Ida/Vuelta");


            this.codigo = Int32.Parse(cod.Substring(0, 3));
             */
            this.codigo = cod;
            ciudades=new List<string>();
        }


        private List<string> ciudades;
        
        //private string origen;
        //private string destino;


        public string Destino
        {
            get { return Ciudades[this.Sentido == IDA?(Ciudades.Count - 1):0]; }
            //set { destino = value; }
        }

        public string Origen
        {
            get { return Ciudades[this.Sentido == VUELTA ? (Ciudades.Count - 1) : 0]; }
        }

        public List<string> Ciudades
        {
            get { return ciudades; }
        }

        public char Sentido
        {
            get { return sentido; }
            set { sentido = value; }
        }

        public string Codigo
        {
            get { return codigo; }
        }


        /*public Itinerario setOrigen(string o)
        {
            this.origen = o;
            return this;
        }

        public Itinerario setDestino(string d)
        {
            this.destino = d;
            return this;
        }*/

    }
}